package com.bondex.viresult.dto;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <pre>
 * 描述：邦达邮件推送邮件DTO
 * </pre>
 *
 */
public class BondexMailDTO implements Serializable {

    // *发件人，必须先后台注册账户，密码，可去263邮箱申请。传值会覆盖模板绑定的发件人)
    private String emailFrom;
    // 模板UUID (后台注册生成) 绑定了发件人/收件人/抄送人/密送人/正文内容/主题等必填或选填信息，传入id默认加载该模板
    private String id;
    // 收件人邮件地址，收件人邮箱地址 收件人，可以使用逗号“,”分隔，也可以通过分号“;”分隔 (传值默认覆盖模板绑定的收件人)
    private String receiveTo;
    // 抄送人邮箱地址 抄送人，可以使用逗号“,”分隔，也可以通过分号“;”分隔(传值默认覆盖模板绑定的抄送人)
    private String cc;
    // 密送人邮箱地址 密送人，可以使用逗号“,”分隔，也可以通过分号“;”分隔(传值默认覆盖模板绑定的密送人)
    private String bcc;
    // 邮件主题(传值默认覆盖模板绑定的主题)
    private String subject;
    // 纯文本/超文本邮件内容(传值默认覆盖模板绑定的正文内容)
    private String content;
    // 邮件内容地址，可在线加载邮件内容
    private String emailContentUrl;
    // 邮件内容参数,默认使用freemaker表达式进行参数渲染邮件内容(注意邮件内容使用freemaker标准表达式)
    private Map<String, Object> variableContext;
    // 定时发送时间，默认是立即发送时间
    private Date sentDate;
    // 附件base64字符串形式
    private List<String> base64AttachmentsFiles;
    // 附件名称
    private List<String> fileNames;
    // 附件在线地址
    private List<String> attachmentsUrl;
    // 是否加载模板,默认true
    private Boolean isTemplate;
    // 回调任务编号(异步情况下需要回调的编码)
    private String orderNum;
    // 回调地址，异步情况下的回调通知
    private String callbackUrl;
    // 是否为Html超文本，默认true
    private Boolean isHtml;
    // 是否开启特殊匹配(默认开启特殊匹配)
    private String specMatch;
    // 自定义分组编码 groupCode 和 keyword 必须同时传值
    private String groupCode;
    // 特殊情景下自定义的key=value 匹配收件人信息，替换模板绑定的收件人信息， groupCode 和 keyword 必须同时传值，匹配才生效
    private Map<String, Object> keyword;

    public String getEmailFrom() {
        return emailFrom;
    }

    public void setEmailFrom(String emailFrom) {
        this.emailFrom = emailFrom;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getReceiveTo() {
        return receiveTo;
    }

    public void setReceiveTo(String receiveTo) {
        this.receiveTo = receiveTo;
    }

    public String getCc() {
        return cc;
    }

    public void setCc(String cc) {
        this.cc = cc;
    }

    public String getBcc() {
        return bcc;
    }

    public void setBcc(String bcc) {
        this.bcc = bcc;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getEmailContentUrl() {
        return emailContentUrl;
    }

    public void setEmailContentUrl(String emailContentUrl) {
        this.emailContentUrl = emailContentUrl;
    }

    public Map<String, Object> getVariableContext() {
        return variableContext;
    }

    public void setVariableContext(Map<String, Object> variableContext) {
        this.variableContext = variableContext;
    }

    public Date getSentDate() {
        return sentDate;
    }

    public void setSentDate(Date sentDate) {
        this.sentDate = sentDate;
    }

    public List<String> getBase64AttachmentsFiles() {
        return base64AttachmentsFiles;
    }

    public void setBase64AttachmentsFiles(List<String> base64AttachmentsFiles) {
        this.base64AttachmentsFiles = base64AttachmentsFiles;
    }

    public List<String> getFileNames() {
        return fileNames;
    }

    public void setFileNames(List<String> fileNames) {
        this.fileNames = fileNames;
    }

    public List<String> getAttachmentsUrl() {
        return attachmentsUrl;
    }

    public void setAttachmentsUrl(List<String> attachmentsUrl) {
        this.attachmentsUrl = attachmentsUrl;
    }

    public Boolean getTemplate() {
        return isTemplate;
    }

    public void setTemplate(Boolean template) {
        isTemplate = template;
    }

    public String getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }

    public String getCallbackUrl() {
        return callbackUrl;
    }

    public void setCallbackUrl(String callbackUrl) {
        this.callbackUrl = callbackUrl;
    }

    public Boolean getHtml() {
        return isHtml;
    }

    public void setHtml(Boolean html) {
        isHtml = html;
    }

    public String getSpecMatch() {
        return specMatch;
    }

    public void setSpecMatch(String specMatch) {
        this.specMatch = specMatch;
    }

    public String getGroupCode() {
        return groupCode;
    }

    public void setGroupCode(String groupCode) {
        this.groupCode = groupCode;
    }

    public Map<String, Object> getKeyword() {
        return keyword;
    }

    public void setKeyword(Map<String, Object> keyword) {
        this.keyword = keyword;
    }
}
